import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class TopTest {
	
	private Top top;
	private Top top1;
	
	@Before
	public void setUp() throws Exception {
		top = new Top("MorenaRosaBlah", Cor.AZUL, Classificacao.ESPORTE, "EmBaixo", "Superior");
		top1 = new Top("MorenaRosaBlah", Cor.ROSA, Classificacao.ESPORTE, "EmBaixo", "Superior");
	}

	@After
	public void tearDown() throws Exception {
		top = null;
		top1 = null;
	}
	
	@Test(expected=IllegalArgumentException.class)
	public void testTopWithNullNome() {
		new Top(null, Cor.AZUL , Classificacao.ESPORTE, "EmBaixo", "Superior");
	}

	@Test(expected=IllegalArgumentException.class)
	public void testTopWithNullCor() {
		new Top("MorenaRosaBlah", null , Classificacao.ESPORTE, "EmBaixo", "Superior");
	}

	@Test(expected=IllegalArgumentException.class)
	public void testTopWithNullClassificacao() {
		new Top("MorenaRosaBlah", Cor.AZUL , null , "EmBaixo", "Superior");
	}

	@Test(expected=IllegalArgumentException.class)
	public void testTopWithNullFormaDeUso() {
		new Top("MorenaRosaBlah", Cor.AZUL , Classificacao.ESPORTE, null, "Superior");
	}

	@Test(expected=IllegalArgumentException.class)
	public void testTopWithNullTipo() {
		new Top("MorenaRosaBlah", Cor.AZUL , Classificacao.ESPORTE, "EmBaixo", null);
	}
	
/*	@Test
	public void testGetNome() throws Exception{
		assertEquals("O nome estah errado", "MorenaRosaBlah", top.getNome());
	
		top.setNome("MorenaRosaOut/Inv01");
		assertEquals("O nome estah errado", "MorenaRosaOut/Inv01", top.getNome());
		
		top1.setNome("MorenaRosaOut/Inv02");
		assertEquals("O nome estah errado", "MorenaRosaOut/Inv02", top1.getNome());
		
		top.setNome("MorenaRosaOut/Inv02");
		assertEquals("O nome estah errado", "MorenaRosaOut/Inv01", top.getNome());
				
	}
	*/
	@Test
	public void testGetCor() throws Exception{
		assertEquals("A cor estah errada", Cor.AZUL, top.getCor());
	
		top.setCor(Cor.ANIS);
		assertEquals("A cor estah errada", Cor.ANIS, top.getCor());
		
		top1.setCor(Cor.LARANJA);
		assertEquals("A cor estah errada", Cor.LARANJA, top1.getCor());
		
		top.setCor(Cor.LARANJA);
		assertEquals("A cor estah errada", Cor.LARANJA, top.getCor());
		
		assertEquals("A cor estah errada", Cor.LARANJA, top.toString());
		assertEquals("A cor estah errada", Cor.LARANJA, top.toString());
				
	}

	@Test
	public void testGetClassificacao() throws Exception{
		assertEquals("A classificacao estah errada", Classificacao.ESPORTE, top.getClassificacao());
	
		top.setClassificacao(Classificacao.CASUAL);
		assertEquals("A classificacao estah errada", Classificacao.CASUAL, top.getClassificacao());
		
		//top1.setClassificacao(Cor.LARANJA);
		assertEquals("A cor estah errada", Cor.LARANJA, top1.getCor());
		
		top.setCor(Cor.LARANJA);
		assertEquals("A cor estah errada", Cor.LARANJA, top.getCor());
				
	}
	
}
